<?php

include_once(DP_BASE_DIR .'/base/conf/db/LoadConfFileDB.class.php');
/**
 *
 * @author alvaroj
 *
 */
class DBConnection {

	private $serverDB;
	private $user;
	private $password;
	private $dbName;
	private $link;
	private $stmt;
	private $array;

	static $_instance;
	public $info = 'dbConnecion ver 1.0';
	/**
	 * La función construct es privada para evitar que el objeto pueda ser creado mediante new 
	 * @return unknown_type
	 */
	private function __construct(){
		$this->setConnection();
		$this->connect();
	}

	/**
	 * Método para establecer los parámetros de la conexión 
	 * @return unknown_type
	 */
	private function setConnection(){
		$conf = LoadConfFileDB::getInstance();
		$this->serverDB=$conf->getHostDB();
		$this->dbName=$conf->getDB();
		$this->user=$conf->getUserDB();
		$this->password=$conf->getPassDB();
	}

	/**
	 * Evitamos el clonaje del objeto. Patrón Singleton 
	 * @return unknown_type
	 */
	private function __clone(){ }

	/**
	 *  Función encargada de crear, si es necesario, el objeto. Esta es la función que debemos llamar desde fuera de la clase para instanciar el objeto, y así, poder utilizar sus métodos
	 * @return unknown_type
	 */
	public static function getInstance(){
		if (!(self::$_instance instanceof self)){
			self::$_instance=new self();
		}
		return self::$_instance;
	}

	/**
	 * Realiza la conexión a la base de datos. 
	 * @return unknown_type
	 */
	private function connect(){
		$this->link=mysql_connect($this->serverDB, $this->user, $this->password);
		mysql_select_db($this->dbName,$this->link);
		@mysql_query("SET NAMES 'utf8'");
	}

	/**
	 * Método para ejecutar una sentencia sql
	 * @param $sql
	 * @return resource For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query returns a resource on success, or false on error.
	 * 
	 */
	public function exec($sql){
		$this->stmt=mysql_query($sql,$this->link);
		return $this->stmt;
	}

	/**
	 * Método para obtener una fila de resultados de la sentencia sql
	 * @param $stmt
	 * @param $fila
	 * @return unknown_type
	 */
	public function getRow($stmt,$row){
		if ($row==0){
			$this->array=mysql_fetch_array($stmt);
		}else{
			mysql_data_seek($stmt,$row);
			$this->array=mysql_fetch_array($stmt);
		}
		return $this->array;
	}

	/**
	 * Devuelve el último id del insert introducido
	 * @return unknown_type
	 */
	public function lastID(){
		return mysql_insert_id($this->link);
	}

}